<!doctype html>
<html lang="en">

<head>
  <!-- Required meta tags -->
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

  <!-- CSS -->
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
  <link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.15.1/css/all.css" integrity="sha384-9ZfPnbegQSumzaE7mks2IYgHoayLtuto3AS6ieArECeaR8nCfliJVuLh/GaQ1gyM" crossorigin="anonymous">
  <link rel="stylesheet" href="roboto/css/roboto.css">
  <link rel="stylesheet" href="styles.css">
  <script src="main.js"></script>

  <!-- Favicon -->
  <link rel="icon" type="image/png" sizes="192x192" href="/assets/android-icon-192x192.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png">
  <link rel="icon" type="image/png" sizes="96x96" href="/assets/favicon-96x96.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png">

  <title>systeminformation</title>

</head>

<body>
  <nav class="nav">
    <div class="container">
      <a href="."><img class="logo float-left" src="assets/logo.png" alt="logo">
        <div class="title float-left">systeminformation</div>
      </a>
      <div class="text float-right github"><a href="https://github.com/sebhildebrandt/systeminformation">View on Github <i class="fab fa-github"></i></a></div>
      <div class="text float-right todocs"><a href="./#docs">Docs Overview</a></div>
    </div>
  </nav>

  <div class="container-fluid">
    <section class="container">
      <div class="row">
        <div class="col-12 col-md-4 col-lg-3 col-xl-2 menu" id="menu">
        </div>
        <div class="col-12 col-md-8 col-lg-9 col-xl-10 content">
          <div class="row">
            <div class="col-12 sectionheader">
              <div class="title">Major and Breaking Changes</div>
              <div class="text">
                <h2>Major Changes - Version 5</h2>
                <h4>New Functions</h4>
                <ul>
                  <li><span class="code">audio()</span> detailed audio information </li>
                  <li><span class="code">bluetoothDevices()</span> detailed information detected bluetooth devices</li>
                  <li><span class="code">printers()</span> detailed printer information </li>
                  <li><span class="code">usb()</span> detailed USB information</li>
                  <li><span class="code">wifiInterfaces()</span> detected Wi-Fi interfaces</li>
                  <li><span class="code">wifiConnections()</span> active Wi-Fi connections</li>
                </ul>
                <h4>Breaking Changes</h4>
                <p><span class="bold">Be aware</span>, that the new version 5.x is <span class="bold">NOT fully backward compatible</span> to version 4.x ...</p>
                <p>We had to make <span class="bold">several interface changes</span> to keep systeminformation as consistent as possible. We highly recommend to go through the complete list and adapt your own code to be again compatible to the new version 5:</p>
                <table class="table table-sm table-bordered table-striped">
                  <thead>
                    <tr>
                      <th>Function</th>
                      <th>Old</th>
                      <th>New (V5)</th>
                      <th>Comments</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>unsupported values</td>
                      <td><span class="code">-1</span></td>
                      <td><span class="code">null</span></td>
                      <td>values which are unknown or unsupported<br>on platform</td>
                    </tr>
                    <tr>
                      <td><span class="code">battery()</span></td>
                      <td><span class="code">hasbattery<br>cyclecount<br>ischarging<br>designedcapacity<br>maxcapacity<br>acconnected<br>timeremaining</span></td>
                      <td><span class="code">hasBattery<br>cycleCount<br>isCharging<br>designedCapacity<br>maxCapacity<br>acConnected<br>timeRemaining</span></td>
                      <td>pascalCase conformity</td>
                    </tr>
                    <tr>
                      <td><span class="code">blockDevices()</span></td>
                      <td><span class="code">fstype</span></td>
                      <td><span class="code">fsType</span></td>
                      <td>pascalCase conformity</td>
                    </tr>
                    <tr>
                      <td><span class="code">cpu()</span></td>
                      <td><span class="code">speedmin<br>speedmax</span></td>
                      <td><span class="code">speedMin<br>speedMax</span></td>
                      <td>pascalCase conformity</td>
                    </tr>
                    <tr>
                      <td><span class="code">cpu().speed<br>cpu().speedMin<br>cpu().speedMax</span></td>
                      <td>string values</td>
                      <td>now returning<br>numerical values</td>
                      <td>better value handling</td>
                    </tr>
                    <tr>
                      <td><span class="code">cpuCurrentspeed()</span></td>
                      <td></td>
                      <td><span class="code">cpuCurrentSpeed()</span></td>
                      <td>function name changed<br>pascalCase conformity</td>
                    </tr>
                    <tr>
                      <td><span class="code">currentLoad()</span></td>
                      <td><span class="code">avgload<br>currentload<br>currentload_user<br>currentload_system<br>currentload_nice<br>currentload_idle<br>currentload_irq<br>raw_currentload</span></td>
                      <td><span class="code">avgLoad<br>currentLoad<br>currentLoadUser<br>currentLoadSystem<br>currentLoadNice<br>currentLoadIdle<br>currentLoadIrq<br>rawCurrentLoad</span></td>
                      <td>pascalCase conformity</td>
                    </tr>
                    <tr>
                      <td><span class="code">dockerContainerStats()</span></td>
                      <td><span class="code">mem_usage<br>mem_limit<br>mem_percent<br>cpu_percent<br>cpu_stats<br>precpu_stats<br>memory_stats</span></td>
                      <td><span class="code">memUsage<br>memLimit<br>memPercent<br>cpuPercent<br>cpuStats<br>precpuStats<br>memoryStats</span></td>
                      <td>pascalCase conformity</td>
                    </tr>
                    <tr>
                      <td><span class="code">dockerContainerProcesses()</span></td>
                      <td><span class="code">pid_host</span></td>
                      <td><span class="code">pidHost</span></td>
                      <td>pascalCase conformity</td>
                    </tr>
                    <tr>
                      <td><span class="code">graphics().display</span></td>
                      <td><span class="code">pixeldepth<br>resolutionx<br>resolutiony<br>sizex<br>sizey</span></td>
                      <td><span class="code">pixelDepth<br>resolutionX<br>resolutionY<br>sizeX<br>sizeY</span></td>
                      <td>pascalCase conformity</td>
                    </tr>
                    <tr>
                      <td><span class="code">networkConnections()</span></td>
                      <td><span class="code">localaddress<br>localport<br>peeraddress<br>peerport</span></td>
                      <td><span class="code">localAddress<br>localPort<br>peerAddress<br>peerPort</span></td>
                      <td>pascalCase conformity</td>
                    </tr>
                    <tr>
                      <td><span class="code">networkInterfaces()</span></td>
                      <td><span class="code">carrier_changes</span></td>
                      <td><span class="code">carrierChanges</span></td>
                      <td>pascalCase conformity</td>
                    </tr>
                    <tr>
                      <td><span class="code">processes()</span></td>
                      <td><span class="code">mem_vsz<br>mem_rss<br>pcpu<br>pcpuu<br>pcpus<br>pmem</span></td>
                      <td><span class="code">memVsz<br>memRss<br>cpu<br>cpuu<br>cpus<br>mem</span></td>
                      <td>pascalCase conformity<br>renamed attributes</td>
                    </tr>
                    <tr>
                      <td><span class="code">processLoad()</span></td>
                      <td>result as object</td>
                      <td>result as array of objects</td>
                      <td>function now allows to provide more than<br>one process (as a comma separated list)</td>
                    </tr>
                    <tr>
                      <td><span class="code">services()</span></td>
                      <td><span class="code">pcpu<br>pmem</span></td>
                      <td><span class="code">cpu<br>mem</span></td>
                      <td>renamed attributes</td>
                    </tr>
                    <tr>
                      <td><span class="code">vbox()</span></td>
                      <td><span class="code">HPET<br>PAE<br>APIC<br>X2APIC<br>ACPI<br>IOAPIC<br>biosAPICmode<br>TRC</span></td>
                      <td><span class="code">hpet<br>pae<br>apic<br>x2Apic<br>acpi<br>ioApic<br>biosApicMode<br>rtc</span></td>
                      <td>pascalCase conformity</td>
                    </tr>
                  </tbody>
                </table>
                <p>I know, these are <span class="bold">a lot of changes</span>, but for the sake of a consistent interface and to be future proof, we think that this was necessary. Thank you for your understanding.</p>
                <h4>Other Improvements and Changes</h4>
                <ul>
                  <li><span class="code">baseboard()</span>: added memMax, memSlots</li>
                  <li><span class="code">bios()</span>: added language and features (linux)</li>
                  <li><span class="code">cpu()</span>: extended AMD processor list</li>
                  <li><span class="code">cpu()</span>: extended socket list (win)</li>
                  <li><span class="code">cpu()</span>: added <span class="code">virtualization</span> if cpu supports virtualization</li>
                  <li><span class="code">cpu()</span>: now <span class="code">flags</span> are part of this function</li>
                  <li><span class="code">cpuTemperature()</span>: added socket and chipset temperature (linux)</li>
                  <li><span class="code">currentLoad()</span>: added <span class="code">steal</span> and <span class="code">guest</span> time (linux)</li>
                  <li><span class="code">disksIO()</span>: added <span class="code">waitTime</span>, <span class="code">waitPercent</span> (linux)</li>
                  <li><span class="code">fsSize()</span>: added optional drive parameter</li>
                  <li><span class="code">fsSize()</span>: added <span class="code">available</span></li>
                  <li><span class="code">fsSize()</span>: improved calculation of <span class="code">used</span></li>
                  <li><span class="code">getData()</span>: support for passing parameters and filters (see <a href="general.html">section General / getData</a>)</li>
                  <li><span class="code">graphics()</span>: extended properties linux</li>
                  <li><span class="code">graphics()</span>: extended properties macOS</li>
                  <li><span class="code">graphics()</span>: extended nvidia-smi parsing</li>
                  <li><span class="code">networkInterfaces()</span>: type detection improved (win - wireless)</li>
                  <li><span class="code">mem()</span>: added <span class="code">writeback</span> and <span class="code">dirty</span> (linux)</li>
                  <li><span class="code">memLayout()</span>: extended manufacturer list (decoding)</li>
                  <li><span class="code">memLayout()</span>: added ECC flag</li>
                  <li><span class="code">osInfo()</span>: better fqdn (win)</li>
                  <li><span class="code">osinfo()</span>: added <span class="code">hypervizor</span> if hyper-v is enabled (win only)</li>
                  <li><span class="code">system()</span>: better Raspberry PI detection</li>
                  <li><span class="code">system()</span>: added <span class="code">virtual</span> and <span class="code">virtualHost</span> (if system is virtual instance)</li>
                  <li><span class="code">uuid()</span>: better value support</li>
                  <li><span class="code">uuid()</span>: added MACs</li>
                  <li><span class="code">uuid()</span>: better Raspberry Pi hardware ID</li>
                  <li><span class="code">versions()</span>: added bash, zsh, fish, powershell, dotnet</li>
                  <li><span class="code">Apple M1 Silicon</span> extended support</li>
                  <li>updated TypeScript definitions </li>
                </ul>
                <h4>Test Full Version 5 Functionality</h4>
                <p>If you want to see all function results on your machine, please <a href="tests.html">head over to Testing section</a>. We implemented a tiny test suite where you can easily go through all functions and test resuls on your machine without coding.<br><br></p>
                <h2>Major Changes - Version 4</h2>
                <h4>New Functions</h4>
                <ul>
                  <li><span class="code">chassis()</span> chassis information</li>
                  <li><span class="code">vboxInfo()</span> detailed virtualBox VM information</li>
                  <li><span class="code">wifiNetworks()</span> detailed information about available wifi networks</li>
                </ul>
                <h4>Breaking Changes</h4>
                <ul>
                  <li><span class="code">networkStats()</span>: will provide an <strong>array</strong> of stats for all given interfaces. In previous versions only one interface was provided as a parameter. Pass '*' for all interfaces</li>
                  <li><span class="code">networkStats()</span>: <span class="code">rx</span> and <span class="code">tx</span> changed to <span class="code">rx_bytes</span> and <span class="code">tx_bytes</span></li>
                  <li><span class="code">dockerContainerStats()</span> will provide an <strong>array</strong> of stats for all given docker containers. In previous versions only one interface was provided as a parameter. Pass '*' for all docker containers</li>
                </ul>
                <h4>Other Changes</h4>
                <ul>
                  <li><span class="code">system()</span>: optimized system detection (e.g. new Raspberry Pi models, ...)</li>
                  <li><span class="code">system(), bios(), baseboard()</span>: information also as non-root (linux)</li>
                  <li><span class="code">graphics()</span>: added pip, pip3, virtualBox, </li>
                  <li><span class="code">versions()</span>: better controller and display detection, fixes</li>
                  <li><span class="code">networkInterfaces()</span>: optimization, fixes</li>
                  <li><span class="code">networkStats()</span> added <span class="code">operstate</span>, <span class="code">type</span>, <span class="code">duplex</span>, <span class="code">mtu</span>, <span class="code">speed</span>, <span class="code">carrierChanges</span></li>
                  <li>added TypeScript definitions </li>
                </ul>
                <p><strong>Be aware</strong>, that the new version 4.x is <strong>NOT fully backward compatible</strong> to version 3.x ...</p>
                <h2>Major Changes - Version 3</h2>
                <ul>
                  <li>works only with <span class="code">node.js</span> v4.0.0 and above (using now internal ES6 promise function, arrow functions, ...)</li>
                  <li><strong>Promises</strong>. As you can see in the documentation, you can now also use it in a promise oriented way. But callbacks are still supported.</li>
                  <li><strong>Async/Await</strong>. Due to the promises support, systeminformation also works perfectly with the `async/await` pattern (available in <span class="code">node.js</span> <strong>v7.6.0</strong> and above). See example in the docs.</li>
                </ul>
                <br>
                <h2>Full Version History</h2>
                <p>Full version histrory (every single release version from version 1.x.x to 5.x.x) can be <a href="history.html">viewed here</a></p>

              </div>
            </div>
          </div>
        </div>
      </div>
  </div>
  </section>
  </div>
  <footer class="container-fluid footer">
    <div class="container">
      <div class="row">
        <div class="col-lg-4 col-12">
          <ul class="list-unstyled">
            <li><a href="." class="medium home">Home</a></li>
            <li>&nbsp;</li>
            <li><a href="security.html">Security Advisories&nbsp;&nbsp;<i class="fas fa-shield-check"></i></a></li>
            <li><a href="https://github.com/sebhildebrandt/systeminformation">Github <i class="fab fa-github"></i></a></li>
            <li>&nbsp;</li>
            <li><a href="https://buymeacoff.ee/systeminfo" class="medium badge bg-primary"><i class="fas fa-coffee"></i>&nbsp;&nbsp;Buy me a coffee</a></li>
          </ul>
        </div>
        <div class="col-lg-4 col-12">
          <ul class="list-unstyled">
            <li><a href="gettingstarted.html">Quick Start</a></li>
            <li><a href="changes.html">Version 5 Changes</a></li>
            <li><a href="history.html">Full Version History</a></li>
            <li><a href="tests.html">Testing</a></li>
            <li><a href="issues.html">Known Issues</a></li>
            <li><a href="statsfunctions.html">Stats Functions</a></li>
          </ul>
        </div>
        <div class="col-lg-4 col-12">
          <ul class="list-unstyled">
            <li><a href="contributors.html">Contributors</a></li>
            <li><a href="trademarks.html">Trademarks</a></li>
            <li>&nbsp;</li>
            <li><a href="copyright.html">Copyright &amp; License&nbsp;&nbsp;<img src="https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square" alt="MIT license" /></a></li>
            <li><a href="https://www.plus-innovations.com">&copy; 2025 Sebastian Hildebrandt</a></li>
            <li><a href="https://www.plus-innovations.com">+innovations GmbH</a></li>
          </ul>
        </div>
      </div>
    </div>
  </footer>

  <script>
    window.onload = function (e) {
      createMenu();
    }
  </script>

</body>

</html>
